Some application developers desire to customize their applications to interoperate with certain widely-used existing applications such as: word-processing applications; email applications; and the like. In some instances, the application developer would like to provide a user interface that is customized for an application but that can still be easily modified or extended as the application changes. Today, the application developer hard codes this functionality into the application making it cumbersome to change and update.